Application Auto Scaling のターゲット追跡スケーリングポリシーで任意のメトリクスを指定する方法を教えてください
2023.11.29
困っていた内容
ECS サービスの自動スケーリングで、ターゲット追跡スケーリングポリシーの利用を検討しています。 AWS マネジメントコンソールでは次のメトリクスから選択できますが、任意のメトリクスを指定する方法を教えてください。
- ECSServiceAverageCPUUtilization
- ECSServiceAverageMemoryUtilization
- ALBRequestCountPerTarget
どう対応すればいいの?
AWS CLI をご使用ください。
2023年11月時点の挙動として、AWS マネジメントコンソールからは所定のメトリクスのみが指定可能です。一方で、AWS CLI のregister-scalable-targetコマンドやput-scaling-policyコマンドを使用すると、任意のメトリクスを指定したスケーリングポリシーが設定できます。
やってみた
register-scalable-targetコマンドを使用して、ECS サービスをスケーラブルターゲットに登録します。
$ aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/hato-cluster/hato-service \ --min-capacity 1 \ --max-capacity 3 { "ScalableTargetARN": "arn:aws:application-autoscaling:ap-northeast-1:123456789012:scalable-target/0ec522d6bad61a5f47f887af70d30bf5edb9" }
任意のメトリクスを指定した設定ファイルを作成します。
{ "TargetValue": 50, "CustomizedMetricSpecification": { "MetricName": "NetworkRxBytes", "Namespace": "ECS/ContainerInsights", "Dimensions": [ { "Name": "ServiceName", "Value": "hato-service" }, { "Name": "ClusterName", "Value": "hato-cluster" } ], "Statistic": "Average" } }
put-scheduled-actionコマンドで、ポリシーを設定します。
$ aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --policy-name hato-networkrx-scaling-policy \ --resource-id service/hato-cluster/hato-service \ --scalable-dimension ecs:service:DesiredCount \ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration file://scaling-configuration.json { "PolicyARN": "arn:aws:autoscaling:ap-northeast-1:123456789012:scalingPolicy:22d6bad6-1a5f-47f8-87af-70d30bf5edb9:resource/ecs/service/hato-cluster/hato-service:policyName/hato-networkrx-scaling-policy", "Alarms": [ { "AlarmName": "TargetTracking-service/hato-cluster/hato-service-AlarmHigh-abcd", "AlarmARN": "arn:aws:cloudwatch:ap-northeast-1:123456789012:alarm:TargetTracking-service/hato-cluster/hato-service-AlarmHigh-abcd" }, { "AlarmName": "TargetTracking-service/hato-cluster/hato-service-AlarmLow-efgh", "AlarmARN": "arn:aws:cloudwatch:ap-northeast-1:123456789012:alarm:TargetTracking-service/hato-cluster/hato-service-AlarmLow-efgh" } ] }
参考資料
- カスタムメトリクスに基づいた Application Auto Scaling による Amazon ECS サービスのオートスケール | Amazon Web Services ブログ
- ターゲット追跡スケーリングポリシーの概要 - Application Auto Scaling
- register-scalable-target — AWS CLI 2.14.2 Command Reference
- put-scaling-policy — AWS CLI 2.14.2 Command Reference
- サービスのオートスケーリング - Amazon Elastic Container Service